package com.itheima.common;

/**
 * @Author: 斌
 * @DateTime: 2023年02月15日  22:13:18
 * @Description: com.itheima.common
 * @Version: 1.0
 */

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.itheima.pojo.OrderSheet;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;

/**
 * 1、注意监听器不能由spring容器管理，每次调用时都需要手动new
 * 2、监听器内部需要使用ioc中的bean时，可以通过构造方法传入
 *
 *todo:问问笑哥，监听器为何没起作用
 *
 */
@Slf4j
public class OrderSheetListener extends AnalysisEventListener<OrderSheet> {
    private List<OrderSheet> data = Lists.newArrayList();

    private static final Logger LOGGER = LoggerFactory.getLogger(OrderSheetListener.class);

    /**
     *    解析每条数据时都会调用
     */
    @Override
    public void invoke(OrderSheet orderSheet, AnalysisContext context) {
        log.info("invoke方法被调用......");
        data.add(orderSheet);
    }

    /**
     *    所有数据解析完之后调用
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 可以在此处执行业务操作
        // 本例就打印到控制台即可，表示读取完成
        log.info("监听器开始输出内容......");
        LOGGER.info(JSON.toJSONString(data));
    }


}
